package com.autoagent.ai_live_master.scriptRecommendation.service;

import com.autoagent.ai_live_master.scriptRecommendation.dto.LiveStreamingPlanDTO;
import com.autoagent.ai_live_master.scriptRecommendation.entity.LiveStreamingPlan;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 直播计划服务接口
 */
public interface LiveStreamingPlanService extends IService<LiveStreamingPlan> {

    /**
     * 获取所有直播计划列表
     * @return 直播计划DTO列表，不包含敏感信息
     */
    List<LiveStreamingPlanDTO> getAllLiveStreamingPlans(Long id);

    /**
     * 分页获取当前用户的直播计划列表
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 直播计划分页数据，不包含敏感信息
     */
    Page<LiveStreamingPlanDTO> getPageByUserId(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 创建新直播计划
     * @param liveStreamingPlan 直播计划实体
     * @return 创建后的直播计划DTO，不包含敏感信息
     */
    void createLiveStreamingPlan(LiveStreamingPlan liveStreamingPlan);

    /**
     * 更新直播计划信息
     * @param liveStreamingPlan 直播计划实体
     * @return 更新后的直播计划DTO，不包含敏感信息
     */
    LiveStreamingPlanDTO updateLiveStreamingPlan(LiveStreamingPlan liveStreamingPlan);

    /**
     * 删除直播计划
     * @param id 直播计划ID
     * @return 是否删除成功
     */
    boolean deleteLiveStreamingPlan(Integer id);

    /**
     * 启用直播计划
     * @param id 直播计划ID
     * @return 是否启用成功
     */
    boolean enableLiveStreamingPlan(Integer id);

    /**
     * 禁用直播计划
     * @param id 直播计划ID
     * @return 是否禁用成功
     */
    boolean disableLiveStreamingPlan(Integer id);

    /**
     * 根据直播间房号查找启用的直播计划
     * @param roomId 直播间房号
     * @return 直播计划，如果未找到则返回null
     */
    LiveStreamingPlan findEnabledPlanByRoomId(String roomId);
}